// 小程序的 utils/isbn.js 文件

function selectISBN(ISBN, callback) {
  // 构建请求的 URL
  var url = 'https://search.dangdang.com/?key=' + ISBN + '&act=input';

  // 发起网络请求
  wx.request({
    url: url,
    success: function(res) {
      // 请求成功的处理逻辑
      var list = [];
      var count = 0;

      // 使用微信小程序内置的解析 HTML 的能力
      var elements = res.data.match(/\<li.*?\>.*?\<\/li\>/g);
      console.log(elements);
      elements.forEach(function(element) {
        // 提升性能作用
        if (count <= 135) {
          count++;
          return;
        }

        var bookInfo = {};
        // 提取书籍信息
        bookInfo = extractBookInfo(element, bookInfo);
        if (allFieldsNotEmpty(bookInfo)) {
          list.push(bookInfo);
          callback(list);
          return;
        }
      });
    },
    fail: function() {
      // 请求失败的处理逻辑
      callback([]);
    }
  });
}

function extractBookInfo(element, bookInfo) {
  // 使用微信小程序内置的选择器进行元素提取
  var title = element.match(/\<a.*?title=\"(.*?)\".*?\>/)[1];
  if (!title.equals("")) bookInfo.title = title;

  var price = element.match(/\<p.*?class=\"price\".*?\>(.*?)\<\/span\>/)[1];
  if (!price.equals("")) bookInfo.price = price;

  var author = element.match(/\<p.*?class=\"search_book_author\".*?\<span.*?title=\"(.*?)\".*?\>/)[1];
  if (!author.equals("")) bookInfo.author = author;

  var publisher = element.match(/\<p.*?class=\"search_book_author\".*?\<span.*?title=\".*?\".*?\<a.*?title=\"(.*?)\".*?\>/)[1];
  if (!publisher.equals("")) bookInfo.publisher = publisher;

  var detail = element.match(/\<p.*?class=\"detail\".*?\>(.*?)\<\/p\>/)[1];
  if (!detail.equals("")) bookInfo.detail = detail;

  var img = element.match(/data-original=\"(.*?)\"/)[1];
  if (!img.equals("")) bookInfo.img = "https:" + img;
  console.log(bookInfo);
  return bookInfo;
}

function allFieldsNotEmpty(bookInfo) {
  return bookInfo.title != null &&
    bookInfo.price != null &&
    bookInfo.author != null &&
    bookInfo.publisher != null &&
    bookInfo.detail != null &&
    bookInfo.img != null;
}

module.exports = {
  selectISBN: selectISBN
};
